package cn.itcast.web.shiro;

import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;
import org.apache.shiro.crypto.hash.Md5Hash;

public class CustomCredentialsMatcher extends SimpleCredentialsMatcher{
    /**
     *指定对用户输入密码加密规则，以及校验
     * @param token 封装的 用户输入账号密码
     * @param info  realm认证方法的返回值对象，封装正确的密码等
     * @return
     */
    @Override
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        //获取用户输入的用户名
        String email = (String) token.getPrincipal();
        
        //获取用户输入的密码
        String inputPwd = new String((char[]) token.getCredentials());

        //对密码加盐
        String encodePwd = new Md5Hash(inputPwd,email).toString();
        System.out.println("密码加盐后："+encodePwd);
        //获取数据库真的密码
        String dbPwd = (String) info.getCredentials();

        return encodePwd.equals(dbPwd);
    }
}
